/**
 *******************************************************************************
 * @brief       Provide a brief description of the module here (Single line).
 * 
 * @author      Ashwin Vijayakumar
 * 
 * @file        CalAtCmd.c
 * 
 * @version
 * 
 * @date        Aug 18, 2012 10:20:17 AM
 * 
 * @details     Provide a detailed description of the module here (Multi-line).
 * 
 * @pre         Mention any preconditions required to use this module.
 * 
 * @bug         List any bugs in this module.
 * 
 * @note        List any odd modes while using this module.
 * 
 * @warning     List any warnings against using the objects of this module.
 *******************************************************************************
 * @copyright 2012
 * <a href="http://www.afflatustech.com">Afflatus Techtronics</a>
 * and <a href="http://www.ashwinvijayakumar.co.nr">Ashwin Vijayakumar</a>
 * @n@n
 * This work is licensed under the Creative Commons
 * Attribution-NonCommercial-ShareAlike 3.0 Unported License. To view a copy
 * of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or
 * send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain
 * View, California, 94041, USA.
 *******************************************************************************
 */

/**@cond -----------------------------------------------------------------------
 * Includes section
 * Add all #include here.
 * ----------------------------------------------------------------- @endcond */

/**@cond System headers -------------------------------------------- @endcond */

/**@cond Local headers --------------------------------------------- @endcond */
#include "CalAtCmd.h"
#include "McalUart.h"
#include "Std_Types.h"
#include "Platform_Types.h"
#include "time.h"

/**@cond -----------------------------------------------------------------------
 * typedef section (File scope)
 * Add typedef's with file scope here.
 * Capitalization: Upper_Camel_Case.
 * Declare typedef's with project scope in CalAtCmd.h.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Constants section (File scope)
 * Add all constants with file scope here.
 * Capitalization: ALL_CAPS.
 * Note that all constants listed here are limited to this file scope.
 * For project wide scope, declare constants in CalAtCmd.h.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Macros section (File scope)
 * Add all macros with file scope here.
 * Capitalization: ALL_CAPS.
 * Note that all macros listed here are limited to this file scope.
 * For project wide scope, declare macros in CalAtCmd.h.
 * ----------------------------------------------------------------- @endcond */

static CalAtCmd_SregType Sreg;

/**@cond -----------------------------------------------------------------------
 * Global variables section (File scope)
 * Add global variables with file scope here. 
 * Capitalization: lower_case.
 * Declare them with 'static' keyword.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Global variables section (Project scope)
 * PROJECT SCOPE G-VARIABLES ARE LIKE FORBIDDEN FRUIT. REFRAIN FROM USING THEM, 
 * DECLARE FILE SCOPE G-VARIABLES INSTEAD AND DEFINE GETTER/SETTER METHODS TO 
 * ACCESS THEM.
 * Add global variables with project scope here. 
 * Capitalization: lower_case.
 * Declare them without 'static' keyword.
 * Also declare these variables in CalAtCmd.h with 'extern' keyword.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Function prototypes section (File scope)
 * Add prototypes for all functions with file scope here. 
 * Capitalization: Upper_Camel_Case.
 * Declare them with 'static' keyword.
 * For functions with project scope, declare the function prototype in 
 * CalAtCmd.h without 'static' keyword.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Getter/setter method section (Project scope)
 * Define getter/setter methods to provide project scope global access to file 
 * scope global variables. (AVOID USING THESE IF YOU HAVE THROUGHPUT ISSUES).
 * Capitalization: get_Camel_Case/is_Camel_Case/set_Camel_Case.
 * Declare the prototype for these functions in CalAtCmd.h. 
 * ----------------------------------------------------------------- @endcond */

/**@cond ***********************************************************************
 * TODO: Update all comment fields and delete this line.
 * MOD: For functions with project scope, remove 'static' keyword and declare
 * prototype in CalAtCmd.h
 * -------------------------------------------------------------------- @endcond
 * @fn          return_type function_name(TYPE parameter1, TYPE parameter2)
 * @return      Describe the function's return value here.
 * @param       parameter1 Describe the function's 1st parameter here.
 * @param       parameter2 Describe the function's 2nd parameter here.
 * @author      avijayak
 * @date        Aug 18, 2012, 11:20:13 AM
 * @brief	Provide a brief description of the module here (Single line).
 * @details	Provide a detailed description of the module here (Multi-line).
 * @pre         Mention any preconditions required to use this function.
 * @post        Mention any postcondition required to use this function.
 * @bug         List any bugs in this module.
 * @note        List any odd modes while using this function.
 * @warning     List any warnings against using the objects of this function.
 *******************************************************************************
 */

CalAtCmd_CmdSetType
CalAtCmd_ParseCmd( char* pCmdArg )
{
  CalAtCmd_CmdSetType retVal = AT_CMD_ILLEGAL;
  char pCmdAT[3] = {"AT"};
  char pCmdATSt[6] = {"AT+St"};
  char pCmdATSd[6] = {"AT+Sd"};
  char pCmdATSm[6] = {"AT+Sm"};

  /* Check if Set Time AT command was issued */
  if( 0 == strncmp( (const char*)pCmdAT, (const char*)pCmdArg, 2 )
    && ( strlen( pCmdArg ) < 3) )
    {
      retVal = AT_CMD_ATTENTION;
    }
  /* Check if Set Time AT command was issued */
  else if( ( 0 == strncmp( (const char*)pCmdATSt, (const char*)pCmdArg, 5 ) ) )
    {
      retVal = AT_CMD_SREG_TIME;
    }
  /* Check if Set Date AT command was issued */
  else if( 0 == strncmp( (const char*)pCmdATSd, (const char*)pCmdArg, 5 ) )
    {
      retVal = AT_CMD_SREG_DATE;
    }
  /* Check if Enter Message AT command was issued */
  else if( ( 0 == strncmp( (const char*)pCmdATSm, (const char*)pCmdArg, 5 ) ) )
    {
      retVal = AT_CMD_SREG_MSG;
    }
  else
    {
#ifdef PRINT_DBG_MSG
      PrintWp_DbgMsg( "\n\rIllegal AT command." );
#endif
      retVal = AT_CMD_ILLEGAL;
    }

  return( retVal );
}

/** End of function_name ************ Copyright (C) 2012 Afflatus Techtronics */


/** END OF FILE ********************* Copyright (C) 2012 Afflatus Techtronics */
